home *** CD-ROM | disk | FTP | other *** search
/ EnigmA Amiga Run 1996 February / EnigmA AMIGA RUN 04 (1996)(G.R. Edizioni)(IT)[!][issue 1996-02][Skylink CD III].iso / earcd / comm2 / termsorc.lha / Extras / Source / term-source.lha / MiscPanel.c < prev    next >
C/C++ Source or Header  |  1995-09-28  |  9KB  |  393 lines

  1. /*
  2. **    MiscPanel.c
  3. **
  4. **    Editing panel for miscellaneous parts of the configuration
  5. **
  6. **    Copyright © 1990-1995 by Olaf `Olsen' Barthel
  7. **        All Rights Reserved
  8. */
  9.  
  10. #include "termGlobal.h"
  11.  
  12. enum    {    GAD_USE=1000,GAD_CANCEL,GAD_DEFAULT,
  13.         GAD_PAGER,GAD_PAGEGROUP,
  14.         GAD_REQUESTERMODE,GAD_SET_REQUESTERSIZE
  15.     };
  16.  
  17. STATIC LONG __saveds
  18. ShowSize(struct Gadget *SomeGadget,WORD Level)
  19. {
  20.     return(1L << Level);
  21. }
  22.  
  23. BYTE __regargs
  24. MiscPanel(struct Configuration *Config,BYTE *Default)
  25. {
  26.     STATIC LONG PageTitleID[] =
  27.     {
  28.         MSG_V36_0107,
  29.         MSG_V36_0108,
  30.         MSG_USER_INTERFACE_TXT,
  31.         -1
  32.     };
  33.  
  34.     STATIC BYTE InitialPage = 0;
  35.  
  36.     struct LayoutHandle    *Handle;
  37.     BYTE             Cancel = FALSE;
  38.  
  39.     SaveConfig(Config,PrivateConfig);
  40.  
  41.     if(Handle = LT_CreateHandleTags(Window -> WScreen,
  42.         LH_LocaleHook,    &LocaleHook,
  43.         LH_ExitFlush,    FALSE,
  44.     TAG_DONE))
  45.     {
  46.         struct Window    *PanelWindow;
  47.         WORD         i,BufferSize;
  48.  
  49.         for(i = 0 ; i < 32 ; i++)
  50.         {
  51.             if((1L << i) == Config -> MiscConfig -> IOBufferSize)
  52.             {
  53.                 BufferSize = i;
  54.  
  55.                 break;
  56.             }
  57.         }
  58.  
  59.         LT_New(Handle,
  60.             LA_Type,VERTICAL_KIND,
  61.         TAG_DONE);
  62.         {
  63.             LT_New(Handle,
  64.                 LA_Type,VERTICAL_KIND,
  65.             TAG_DONE);
  66.             {
  67.                 LT_New(Handle,
  68.                     LA_Type,    TAB_KIND,
  69.                     LA_ID,        GAD_PAGER,
  70.                     LA_LabelID,    MSG_XFER_PAGE_TXT,
  71.                     LACY_LabelTable,PageTitleID,
  72.                     LACY_AutoPageID,GAD_PAGEGROUP,
  73.                     LACY_TabKey,    TRUE,
  74.                     LA_BYTE,    &InitialPage,
  75.                     LATB_FullWidth,    TRUE,
  76.                 TAG_DONE);
  77.  
  78.                 LT_EndGroup(Handle);
  79.             }
  80.  
  81.             LT_New(Handle,
  82.                 LA_Type,    VERTICAL_KIND,
  83.                 LA_ID,        GAD_PAGEGROUP,
  84.                 LAGR_ActivePage,InitialPage,
  85.             TAG_DONE);
  86.             {
  87.                 LT_New(Handle,
  88.                     LA_Type,    VERTICAL_KIND,
  89.                 TAG_DONE);
  90.                 {
  91.                     LT_New(Handle,
  92.                         LA_Type,    CHECKBOX_KIND,
  93.                         LA_LabelID,    MSG_MISCPANEL_BACKUP_CONFIGURATION_GAD,
  94.                         LA_BYTE,    &Config -> MiscConfig -> BackupConfig,
  95.                     TAG_DONE);
  96.  
  97.                     LT_New(Handle,
  98.                         LA_Type,    CHECKBOX_KIND,
  99.                         LA_LabelID,    MSG_MISCPANEL_SHOW_FAST_MACROS_GAD,
  100.                         LA_BYTE,    &Config -> MiscConfig -> OpenFastMacroPanel,
  101.                     TAG_DONE);
  102.  
  103.                     LT_New(Handle,
  104.                         LA_Type,    CHECKBOX_KIND,
  105.                         LA_LabelID,    MSG_MISCPANEL_RELEASE_SERIAL_DEVICE_GAD,
  106.                         LA_BYTE,    &Config -> MiscConfig -> ReleaseDevice,
  107.                     TAG_DONE);
  108.  
  109.                     LT_New(Handle,
  110.                         LA_Type,    CHECKBOX_KIND,
  111.                         LA_LabelID,    MSG_MISCPANEL_SIMPLE_IO_GAD,
  112.                         LA_BYTE,    &Config -> MiscConfig -> SimpleIO,
  113.                     TAG_DONE);
  114.  
  115.                     LT_New(Handle,
  116.                         LA_Type,    CHECKBOX_KIND,
  117.                         LA_LabelID,    MSG_OVERWRITE_WARNING_TXT,
  118.                         LA_BYTE,    &Config -> MiscConfig -> ProtectiveMode,
  119.                     TAG_DONE);
  120.  
  121.                     LT_New(Handle,
  122.                         LA_Type,    CHECKBOX_KIND,
  123.                         LA_LabelID,    MSG_MISCPANEL_CREATE_ICONS_GAD,
  124.                         LA_BYTE,    &Config -> MiscConfig -> CreateIcons,
  125.                     TAG_DONE);
  126.  
  127.                     LT_EndGroup(Handle);
  128.                 }
  129.  
  130.                 LT_New(Handle,
  131.                     LA_Type,    VERTICAL_KIND,
  132.                 TAG_DONE);
  133.                 {
  134.                     LT_New(Handle,
  135.                         LA_Type,        SliderType,
  136.                         LA_LabelID,        MSG_MISCPANEL_PROGRAM_PRIORITY_GAD,
  137.                         GTSL_Min,        -128,
  138.                         GTSL_Max,         127,
  139.                         GTSL_LevelFormat,    "%4ld",
  140.                         LA_BYTE,        &Config -> MiscConfig -> Priority,
  141.                         LA_Chars,        12,
  142.                     TAG_DONE);
  143.  
  144.                     LT_New(Handle,
  145.                         LA_Type,        SliderType,
  146.                         LA_LabelID,        MSG_V36_1810,
  147.                         LA_WORD,        &BufferSize,
  148.                         GTSL_Min,        12,
  149.                         GTSL_Max,        20,
  150.                         GTSL_DispFunc,        ShowSize,
  151.                         GTSL_LevelFormat,    LocaleBase ? "%7lD" : "%7ld",
  152.                     TAG_DONE);
  153.  
  154.                     LT_EndGroup(Handle);
  155.                 }
  156.  
  157.                 LT_New(Handle,
  158.                     LA_Type,    VERTICAL_KIND,
  159.                 TAG_DONE);
  160.                 {
  161.                     LT_New(Handle,
  162.                         LA_Type,    CYCLE_KIND,
  163.                         LA_LabelID,    MSG_TERMINALPANEL_ALERT_GAD,
  164.                         LA_BYTE,    &Config -> MiscConfig -> AlertMode,
  165.                         LACY_FirstLabel,MSG_TERMINALPANEL_ALERT_NONE_TXT,
  166.                         LACY_LastLabel,    MSG_TERMINALPANEL_ALERT_SIGNAL_SCREEN_TXT,
  167.                     TAG_DONE);
  168.  
  169.                     LT_New(Handle,
  170.                         LA_Type,    XBAR_KIND,
  171.                     TAG_DONE);
  172.  
  173.                     LT_New(Handle,
  174.                         LA_Type,    CYCLE_KIND,
  175.                         LA_LabelID,    MSG_REQUESTER_DIMENSIONS_TXT,
  176.                         LA_BYTE,    &Config -> MiscConfig -> RequesterMode,
  177.                         LACY_FirstLabel,MSG_LABEL_CENTRE_TXT,
  178.                         LACY_LastLabel,    MSG_LABEL_IGNORE_TXT,
  179.                         LA_ID,        GAD_REQUESTERMODE,
  180.                     TAG_DONE);
  181.  
  182.                     LT_New(Handle,
  183.                         LA_Type,    BUTTON_KIND,
  184.                         LA_LabelID,    MSG_REQUESTER_EDIT_SIZE_TXT,
  185.                         LA_ID,        GAD_SET_REQUESTERSIZE,
  186.                         GA_Disabled,    Config -> MiscConfig -> RequesterMode == REQUESTERMODE_IGNORE,
  187.                     TAG_DONE);
  188.  
  189.                     LT_EndGroup(Handle);
  190.                 }
  191.  
  192.                 LT_EndGroup(Handle);
  193.             }
  194.  
  195.             LT_New(Handle,
  196.                 LA_Type,VERTICAL_KIND,
  197.             TAG_DONE);
  198.             {
  199.                 LT_New(Handle,
  200.                     LA_Type,    XBAR_KIND,
  201.                     LAXB_FullSize,    TRUE,
  202.                 TAG_DONE);
  203.  
  204.                 LT_EndGroup(Handle);
  205.             }
  206.  
  207.             LT_New(Handle,LA_Type,HORIZONTAL_KIND,
  208.                 LAGR_SameSize,    TRUE,
  209.                 LAGR_Spread,    TRUE,
  210.             TAG_DONE);
  211.             {
  212.                 LT_New(Handle,
  213.                     LA_Type,    BUTTON_KIND,
  214.                     LA_LabelID,    MSG_GLOBAL_USE_GAD,
  215.                     LA_ID,        GAD_USE,
  216.                     LABT_ReturnKey,    TRUE,
  217.                     LABT_ExtraFat,    TRUE,
  218.                 TAG_DONE);
  219.  
  220.                 if(Default)
  221.                 {
  222.                     LT_New(Handle,
  223.                         LA_Type,    BUTTON_KIND,
  224.                         LA_LabelID,    MSG_GLOBAL_DEFAULT_GAD,
  225.                         LA_ID,        GAD_DEFAULT,
  226.                         LABT_ExtraFat,    TRUE,
  227.                     TAG_DONE);
  228.                 }
  229.  
  230.                 LT_New(Handle,
  231.                     LA_Type,    BUTTON_KIND,
  232.                     LA_LabelID,    MSG_GLOBAL_CANCEL_GAD,
  233.                     LA_ID,        GAD_CANCEL,
  234.                     LABT_EscKey,    TRUE,
  235.                     LABT_ExtraFat,    TRUE,
  236.                 TAG_DONE);
  237.  
  238.                 LT_EndGroup(Handle);
  239.             }
  240.  
  241.             LT_EndGroup(Handle);
  242.         }
  243.  
  244.         if(PanelWindow = LT_Build(Handle,
  245.             LAWN_TitleID,        MSG_MISCPANEL_MISCELLANEOUS_PREFERENCES_TXT,
  246.             LAWN_IDCMP,        IDCMP_CLOSEWINDOW,
  247.             LAWN_HelpHook,        &GuideHook,
  248.             LAWN_Parent,        Window,
  249.             WA_DepthGadget,        TRUE,
  250.             WA_CloseGadget,        TRUE,
  251.             WA_DragBar,        TRUE,
  252.             WA_RMBTrap,        TRUE,
  253.             WA_Activate,        TRUE,
  254.             WA_SimpleRefresh,    TRUE,
  255.         TAG_DONE))
  256.         {
  257.             struct IntuiMessage    *Message;
  258.             BOOLEAN             Done = FALSE;
  259.             ULONG             MsgClass;
  260.             struct Gadget        *MsgGadget;
  261.             struct FileRequester    *FileRequester = NULL;
  262.             BOOL             JustCreated;
  263.  
  264.             GuideContext(CONTEXT_MISC);
  265.  
  266.             PushWindow(PanelWindow);
  267.  
  268.             LT_ShowWindow(Handle,TRUE);
  269.  
  270.             do
  271.             {
  272.                 if(Wait(PORTMASK(PanelWindow -> UserPort) | SIG_BREAK) & SIG_BREAK)
  273.                 {
  274.                     SaveConfig(PrivateConfig,Config);
  275.  
  276.                     break;
  277.                 }
  278.  
  279.                 while(Message = (struct IntuiMessage *)LT_GetIMsg(Handle))
  280.                 {
  281.                     MsgClass    = Message -> Class;
  282.                     MsgGadget    = (struct Gadget *)Message -> IAddress;
  283.  
  284.                     LT_ReplyIMsg(Message);
  285.  
  286.                     if(MsgClass == IDCMP_CLOSEWINDOW)
  287.                     {
  288.                         SaveConfig(PrivateConfig,Config);
  289.  
  290.                         Done = TRUE;
  291.                     }
  292.  
  293.                     if(MsgClass == IDCMP_GADGETUP)
  294.                     {
  295.                         switch(MsgGadget -> GadgetID)
  296.                         {
  297.                             case GAD_REQUESTERMODE:
  298.  
  299.                                 LT_SetAttributes(Handle,GAD_SET_REQUESTERSIZE,
  300.                                     GA_Disabled,Config -> MiscConfig -> RequesterMode == REQUESTERMODE_IGNORE,
  301.                                 TAG_DONE);
  302.  
  303.                                 break;
  304.  
  305.                             case GAD_SET_REQUESTERSIZE:
  306.  
  307.                                 LT_LockWindow(PanelWindow);
  308.  
  309.                                 if(!FileRequester)
  310.                                 {
  311.                                     if(FileRequester = (struct FileRequester *)AllocAslRequestTags(ASL_FileRequest,
  312.                                         ASLFR_Window,        PanelWindow,
  313.                                         ASLFR_TitleText,    LocaleString(MSG_MOVE_RESIZE_THIS_WINDOW_TXT),
  314.                                         ASLFR_PositiveText,    LocaleString(MSG_GLOBAL_USE_GAD),
  315.                                         ASLFR_Flags1,        FILF_NEWIDCMP,
  316.                                         ASLFR_PrivateIDCMP,    TRUE,
  317.                                     TAG_DONE))
  318.                                         JustCreated = TRUE;
  319.                                 }
  320.  
  321.                                 if(FileRequester)
  322.                                 {
  323.                                     BOOL Result;
  324.  
  325.                                     if(JustCreated && (!Config -> MiscConfig -> RequesterWidth || !Config -> MiscConfig -> RequesterHeight))
  326.                                         JustCreated = FALSE;
  327.  
  328.                                     Result = AslRequestTags(FileRequester,
  329.                                         ASLFR_InitialLeftEdge,                Window -> LeftEdge + Config -> MiscConfig -> RequesterLeft,
  330.                                         ASLFR_InitialTopEdge,                Window -> TopEdge + Config -> MiscConfig -> RequesterTop,
  331.                                         JustCreated ? ASLFR_InitialWidth : TAG_IGNORE,    Config -> MiscConfig -> RequesterWidth,
  332.                                         JustCreated ? ASLFR_InitialHeight : TAG_IGNORE,    Config -> MiscConfig -> RequesterHeight,
  333.                                     TAG_DONE);
  334.  
  335.                                     if(!Result && IoErr())
  336.                                         Result = AslRequest(FileRequester,NULL);
  337.  
  338.                                     if(Result)
  339.                                     {
  340.                                         Config -> MiscConfig -> RequesterLeft    = FileRequester -> fr_LeftEdge - Window -> LeftEdge;
  341.                                         Config -> MiscConfig -> RequesterTop    = FileRequester -> fr_TopEdge - Window -> TopEdge;
  342.                                         Config -> MiscConfig -> RequesterWidth    = FileRequester -> fr_Width;
  343.                                         Config -> MiscConfig -> RequesterHeight    = FileRequester -> fr_Height;
  344.                                     }
  345.  
  346.                                     JustCreated = FALSE;
  347.                                 }
  348.  
  349.                                 LT_UnlockWindow(PanelWindow);
  350.  
  351.                                 break;
  352.  
  353.                             case GAD_USE:
  354.  
  355.                                 Config -> MiscConfig -> IOBufferSize = 1L << BufferSize;
  356.  
  357.                                 Done = TRUE;
  358.                                 break;
  359.  
  360.                             case GAD_CANCEL:
  361.  
  362.                                 SaveConfig(PrivateConfig,Config);
  363.  
  364.                                 Cancel = Done = TRUE;
  365.                                 break;
  366.  
  367.                             case GAD_DEFAULT:
  368.  
  369.                                 *Default = TRUE;
  370.  
  371.                                 Done = TRUE;
  372.                                 break;
  373.                         }
  374.                     }
  375.                 }
  376.             }
  377.             while(!Done);
  378.  
  379.             if(FileRequester)
  380.                 FreeAslRequest(FileRequester);
  381.  
  382.             PopWindow();
  383.         }
  384.  
  385.         LT_DeleteHandle(Handle);
  386.     }
  387.  
  388.     if(Default)
  389.         return((BYTE)(!Cancel));
  390.     else
  391.         return((BYTE)memcmp(PrivateConfig -> MiscConfig,Config -> MiscConfig,sizeof(struct MiscSettings)));
  392. }
  393.